<!DOCTYPE html>
<html lang="zh-cn">
<head>
  
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  <title>
重拾C语言之运算符优先级 |
穷折腾</title>
  <link rel="stylesheet" href="/static/css/style.css" />
  <link rel="stylesheet" href="/static/css/pygments.css" />
  <link rel="alternate" type="application/rss+xml" title="RSS" href="http://blog.zorro.im/rss.xml" />
  <link rel="icon" type="image/png" href="/static/img/favicon.png">
</head>
<body>
    <div class="page-wrap">
        <section class="main-header regular">
            <div class="vertical-container">
                <div class="wrapper clearfix">
                    <header>
                        <a href="/">
                            <h1 id="main-title">穷折腾</h1>
                            <h2 id="main-subtitle">zqqf16 的个人博客</h2>
                        </a>
                    </header>
                    <nav id="main-nav" role="navigation">
                        <a href="/" class="selected">主页</a>
                        <a href="/posts/about.html" class="">关于</a>
                        <a href="https://github.com/zqqf16">Github</a>
                    </nav>
                </div>
            </div>
        </section>
        <section class="main-content">
            
<article class="main-content">
    <div class="wrapper">
        <header class="section-header">
            <h1 class="section-title">重拾C语言之运算符优先级</h1>
            <span class="section-subtitle"><time datetime="2013-05-28" pubdate="">2013-05-28</time></span>
        </header>
        <section class="post-content">
        	<p>总是记不住C语言各个运算符的优先级，<s>每次用的时候都得用笨办法——加括号。虽然成功率很高，但是稍微长一点的语句可读性极差</s>。因此，就借最近整理C语言知识点的时机恶补一下。</p>
<p>注意：下面的这段内容抄自<a href="http://baike.baidu.com/view/1516130.htm">百度百科</a></p>
<blockquote>
<p><strong>1级（左结合）</strong>  <br />
( ) 圆括号；[ ]下标运算符；-&gt;指向结构体成员运算符；. 结构体成员运算符。<br />
<strong>2级（右结合）</strong><br />
“ ! ”逻辑非运算符；“ ~ ”按位取反运算符；“ ++ ”前缀增量运算符；“ -- ”前缀减量运算符；<br />
“ - ”负号运算符；(类型)类型转换运算符；“ * ”指针运算符；“ &amp; ”地址运算符；<br />
“sizeof ” 长度运算符。<br />
<strong>3级（左结合）</strong><br />
“ * ” 乘法运算符；“ / ”除法运算符；“ % ” 取余运算符。<br />
<strong>4级（左结合）</strong><br />
“ + ”加法运算符；“ - ”减法运算符。<br />
<strong>5级（左结合）</strong>  <br />
&lt;&lt; 左移运算符；&gt;&gt; 右移运算符。<br />
<strong>6级（左结合）</strong><br />
&lt;、&lt;=、&gt;、&gt;=关系运算符。<br />
<strong>7级（左结合）</strong><br />
“ == ”等于运算符；“ != ”不等于运算符。<br />
<strong>8级（左结合）</strong>  <br />
“ &amp; ”按位与运算符。<br />
<strong>9级（左结合）</strong><br />
“ ∧ ”按位异或运算符。<br />
<strong>10级（左结合）</strong><br />
“ | ”按位或运算符。 
<strong>11级（左结合）</strong><br />
“&amp;&amp;”逻辑与运算符。<br />
<strong>12级（左结合）</strong><br />
“ || ”逻辑或运算符。<br />
<strong>13级（右结合）</strong><br />
? :条件运算符。<br />
<strong>14级（右结合）</strong><br />
=、 +=、 -=、 *=、 /=、 %=、 &amp;=、 ^=、 |=、 &lt;&lt;=、 &gt;&gt;=赋值运算符。<br />
<strong>15级（左结合）</strong><br />
“，”逗号运算符。  </p>
</blockquote>
<p>---抄袭结束---</p>
<p>记住“==”和“!=”的优先级高于“&amp;&amp;”和“||”，<code>if</code>的时候就可以省下好几对括号了。</p>
<p>记住[ ]的优先级高于“*”, 就可以区分数组的指针和指针数组了(<code>char (*p)[20]</code>，<code>char *p[20]</code>)。</p>
<p>PS：如果实在记不清，还是建议乖乖地套上括号，这是最靠谱的方法。</p>
<p>PS2：“只记住两个优先级就够了：乘法和除法优先于加减法，其他操作一律加括号” —— 《C专家编程》</p>
        </section>
        <div class="post-nav">
    		<!-- Duoshuo Comment BEGIN -->
<div class="ds-thread"></div>
<script type="text/javascript">
	var duoshuoQuery = {short_name:"zqqf16"};
	(function() {
		var ds = document.createElement('script');
		ds.type = 'text/javascript';ds.async = true;
		ds.src = 'http://static.duoshuo.com/embed.js';
		ds.charset = 'UTF-8';
		(document.getElementsByTagName('head')[0]
		|| document.getElementsByTagName('body')[0]).appendChild(ds);
	})();
</script>
<!-- Duoshuo Comment END -->

    	</div>
    </div>

</article>

        </section>
    </div>
    <footer class="main-footer">
        <div class="vertical-container">
            <div class="wrapper">
                <p class="copy">&copy; zqqf16</p>
            </div>
        </div>
    </footer>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      ga('create', 'UA-41282906-2', 'auto');
      ga('require', 'displayfeatures');
      ga('send', 'pageview');
    </script>
</body>
</html>
